package crypto

type SymmetricCrypto interface {
	Encrypt(data []byte) ([]byte, error)           // 加密
	Decrypt(data []byte) ([]byte, error)           // 解密
	EncryptWithBase64(data []byte) (string, error) // 加密，使用base64
	DecryptWithBase64(data string) ([]byte, error) // 解密，使用base64
}

// 非对称加密
type AsymmetricCrypto interface {
	EncryptWithPrivateKey(data []byte) ([]byte, error)         // 私钥加密
	DecryptWithPublicKey(data []byte) ([]byte, error)          // 公钥解密
	EncryptWithPublicKey(data []byte) ([]byte, error)          // 公钥加密
	DecryptWithPrivateKey(data []byte) ([]byte, error)         // 私钥解密
	EncryptWithPrvKOutputBase64(data []byte) (string, error)   // 私钥加密，输出base64加密
	DecryptWithPubKeyFromBase64(data string) ([]byte, error)   // 公钥解密,输入base64
	EncryptWithPubKeyOutputBase64(data []byte) (string, error) // 公钥加密，输出base64加密
	DecryptWithPrvKeyFromBase64(data string) ([]byte, error)   // 私钥解密,输入base64
}

type Rc4Crypto interface {
	EncryptWithBase64(data []byte) string
	DecryptWithBase64(data string) (string, error)
}
